<?php namespace Common\Model;
	
	use Hdphp\Model\Model;
//	请求引用框架里的模型类

//	创建用户类
	class Cate extends  Model{
//		固定写法 处理指定表的数据
		protected $table='category';
		
//		自动验证的参数
//		array(字段名,验证方法,错误信息,验证条件,验证时间)
		protected $validate = array(
		array('cname','required','分类名称不能为空',3,3),
		array('cname','maxlen:10','分类名称不能超过10位',3,3),
        array('csort','num:0,200','排序的字段数值不能超出200',3,3),
		
		);
		
		public function store(){
//			var_dump($_POST);die;
			if(!$this->create()) return FALSE;
//			调用Model中的create()方法
//			create()方法会自动调用autoValidate()方法 在autoValidate()方法中会实例化验证库VaAction 调用$validate验证
//			如果验证正确则继续执行add()方法
			
			return $this->add();
//			这里调用的是Model中的add()方法
		}
		
		/**
		 *获取不是当前类或当前类的自己的所有数据
		 *
		 * 参数1:当前分类的cid 
		 * 返回的结果:最终查询重组后的不包含自己和子集的分类数据
		 */		
		public function getNoMy($cid){
//			echo 'getnomy';die;
//			1.获取当前分类的所有子集
//				1.获取当前分类表中的所有分类数据
			$cateData=$this->get();
			
//				2.获取子集
//				返回所有子集的id数组
			$cids=$this->getSon($cateData,$cid);
//			var_dump($cids);die;
			
//			2.将当前分类压入
			$cids[]=$cid;
//			var_dump($cids);die;
//			将数组转字符串
			$cids=implode(',', $cids);
//			var_dump($cids);die;
//			查找所有分类中，不存在于cids中的数据
//			select * from category where cid not in ("2,6,7");
			$data=$this->where("cid not in (".$cids.")")->get();
//			var_dump($data);die;
			
//			树形结构处理
			$data=Data::tree($data,'cname');

			return $data;
		}
		
//		编辑方法
		public function edit(){
//			var_dump($_POST);die;
//			只要有主键,,在模型中修改直接使用save();
			if(!$this->create()) return FALSE;
//			执行修改
//			save注意save条件需要有主键
//			在页面提交数据时需要添加一个隐藏域有当前的主键
			return $this->save();
		}
		
		
		
//		获取子集方法
		/**
		 * 获取子集的方法
		 * 参数1:所有分类数据,
		 * 参数2:当前要查找的分类的id
		 * 结果:分类的子集数组
		 */
		public function getSon($data,$cid){
			$temp=array();
//			传入2
//			找2的子集//$v['pid']==2
			foreach($data as $k=>$v){
				if($v['pid']==$cid){
//					var_dump($v);die;
//					将找到的$v这个分类的主键，压入temp临时变量中存储
					$temp[]=$v['cid'];
//					将当前压入的$temp临时变量和递归条件返回的数组进行合并 获取子集还有子集的子集
					$temp=array_merge($temp,$this->getSon($data,$v['cid']));
				}
			}
			return $temp;
		}
		
		
		
		
		
		
		
		
		
		
	}
	
	
	?>